package com.swa99ylum.pjv.validator;

import java.util.Map;

import com.swa99ylum.pjv.Component;
import com.swa99ylum.pjv.exception.JSONValidateException;

/** <h1>验证器</h1>
<br> 用于对 节点的值 进行验证
<br> 
<br> 
 * @param rootObject : 根对象
 * @param nodePath : 当前节点的 path
 * @param nodeName : 当前节点的 name
 * @param parentValue : 当前节点的 父节点 的值
 * @param value : 当前节点 的值
 */
public abstract class Validator extends Component {
	//由于是 用 fastjson 来解析的，所以 value 的类型可能是 单值、List、Object
	public abstract void doValidate(Object rootObject, String[] nodePath, String nodeName, Map<String, Object> parentValue, Object value) throws JSONValidateException;
	
	public boolean validate(Object rootObject, String[] nodePath, String nodeName, Map<String, Object> parentValue, Object value) {
		try {
			doValidate(rootObject, nodePath, nodeName, parentValue, value);
			
		} catch (JSONValidateException e) {
			logError(e);
			return false;
		}
		
		return true;
	}
	
	
}
